#include "demo2.h"
#include "led.h"

void demo2_test(void)
{
    led_init();

    // 通过GPIOA.0捕获按键输入的状态
    __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA的时钟

    GPIO_InitTypeDef GPIO_InitTypeStructure = {
        .Pin  = GPIO_PIN_0,      // PIN脚
        .Mode = GPIO_MODE_INPUT, // 配置为输入模式
        .Pull = GPIO_PULLDOWN,   // 修改下拉模式
        // .Speed=  在输入模式下，无需设置速度
    };

    HAL_GPIO_Init(GPIOA, &GPIO_InitTypeStructure);

    while (1) {

        // GPIO_PinState state = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

        // // 可以根据，按键按下，还是没有按下，让LED灯点亮
        // if (GPIO_PIN_RESET == state) {                          // 此时的GPIO的输入为低电平（默认没有被按下）
        //     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 没有按下，就不点亮
        // } else {
        //     // 被按下了
        //     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 没有按下，就不点亮
        // }

        uint8_t state = PAin(0); // 类似于51的一种IO直接操作方式
        if (state != 0) {        // 作比较的时候，都是和0进行比较（按键被按下了）
            // PBout(0) = 0;        // 点亮
            LED = 0;
        } else {
            // PBout(0) = 1; // 点亮
            LED = 1;
        }
    }
}

// void demo2_test(void)
// {

//     led_init();

//     // 通过GPIOA.0捕获按键输入的状态
//     __HAL_RCC_GPIOA_CLK_ENABLE(); // 开启GPIOA的时钟

//     // 设置位输入模式（）
//     GPIOA->CRL &= ~0x0F;
//     // 由于一开始Mode被清掉，所以需要进行重复设置了
//     GPIOA->CRL |= (0x02 << 2);  // 配置为上下拉模式了
//     GPIOA->ODR &= ~(0x01 << 0); // 默认设置为下拉模式

//     while (1) {

//         if ((GPIOA->IDR & (0x01 << 0))) { // 如果结果是非零，就说明被按下了
//             GPIOB->ODR &= ~0x01;          // 让LED灯点亮
//         } else {
//             GPIOB->ODR |= 0x01; // 让LED熄灭
//         }
//     }
// }